<?php
class EquiposOperativosController extends AppController {

	var $name = 'EquiposOperativos';
	var $uses = array('UsersEquiposOperativo', 'EquiposOperativo');
	var $helpers = array('Access');

	function index() {
		$usuario_activo = $this->Access->getMy('username');
		//Verificacion de sesion del sistema		
		if(!$usuario_activo){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'users','action' => 'login'));
		}
		$this->EquiposOperativo->recursive = 0;
		
		$equiposOperativos = $this->paginate('EquiposOperativo');
		
		foreach( $equiposOperativos as &$eo ){
			$municipo_zona = $this->EquiposOperativo->Zona->read('municipio_id', $eo['EquiposOperativo']['zona_id']);
			$nombreMunicipio = $this->EquiposOperativo->Zona->Municipio->read('nombre', $municipo_zona['Zona']['municipio_id']);
			$eo['nombre_municipio'] = $nombreMunicipio['Municipio']['nombre'];
			unset($eo);
		}
		
		$this->set('equiposOperativos', $equiposOperativos);
	}

	function view($id = null) {
		$usuario_activo = $this->Access->getMy('username');
		//Verificacion de sesion del sistema		
		if(!$usuario_activo){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'users','action' => 'login'));
		}
		if (!$id) {
			$this->Session->setFlash(__('Equipo operativo Invalido', true));
			$this->redirect(array('action' => 'index'));
		}
		$eo = $this->EquiposOperativo->read(null, $id);
		
		$municipo_zona = $this->EquiposOperativo->Zona->read('municipio_id', $eo['EquiposOperativo']['zona_id']);
		$nombreMunicipio = $this->EquiposOperativo->Zona->Municipio->read('nombre', $municipo_zona['Zona']['municipio_id']);
		$eo['nombre_municipio'] = $nombreMunicipio['Municipio']['nombre'];
		
		foreach( $eo['User'] as &$usuarios ){
			
			$nombre_rol = $this->EquiposOperativo->User->Group->read('nombre', $usuarios['group_id']);
			$usuarios['nombre_rol'] = $nombre_rol['Group']['nombre'];
			unset($usuarios);
		}

		
		$this->set('equiposOperativo', $eo);
	}

	function add() {
		$usuario_activo = $this->Access->getMy('username');
		//Verificacion de sesion del sistema		
		if(!$usuario_activo){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'users','action' => 'login'));
		}
		if (!empty($this->data)) {
			$form = $this->data;
			$usuarios;
			
			if(!empty($form['EquiposOperativo']['Coordinadores'])){
				$usuarios[]=$form['EquiposOperativo']['Coordinadores'];
			}
			if(is_array($form['EquiposOperativo']['Asesores Pedagogicos'])) {
				foreach ($form['EquiposOperativo']['Asesores Pedagogicos'] as $usuario){
					$usuarios[]=$usuario;
				}
			}
			if(is_array($form['EquiposOperativo']['Asesores Psicosociales'])) {
				foreach ($form['EquiposOperativo']['Asesores Psicosociales'] as $usuario){
					$usuarios[]=$usuario;
				}
			}
			if(is_array($form['EquiposOperativo']['Asesores de Refuerzo'])) {
				foreach ($form['EquiposOperativo']['Asesores de Refuerzo'] as $usuario){
					$usuarios[]=$usuario;
				}
			}
			
			$this->EquiposOperativo->create();
			if ($this->EquiposOperativo->save($this->data)) {
				
				$id_equipo_operativo = $this->EquiposOperativo->id;			
				
				for($i=0; $i<count($usuarios); $i++){
					$grupo = $this->EquiposOperativo->User->find('list', array('fields' => array('User.group_id'),'conditions'=>array('User.id'=>$usuarios[$i])));
					//die(var_dump($grupo));
					$registro['UsersEquiposOperativo']= array('user_id'=>$usuarios[$i],'equipos_operativo_id'=>$id_equipo_operativo,'group_id'=>$grupo[$usuarios[$i]]);
					
					$this->UsersEquiposOperativo->create();
					$this->UsersEquiposOperativo->save($registro);

				}				
				$this->Session->setFlash(__('El Equipo Operativo ha sido creado', true));
				$this->redirect(array('action' => 'index'));
				
			} else {
				$this->Session->setFlash(__('El Equipo Operativo no ha sido. Intente de nuevo.', true));
			}
		}
		
		//Zonas 	
		$zonas_asignadas = $this->EquiposOperativo->Zona->find('all',array('fields'=>array('Zona.id','Zona.municipio_id')));
		
//		$zonas_libres = $this->EquiposOperativo->Zona->find('list', array('fields' => array('Zona.id', 'municipio_id'), 
//													'conditions' =>  array('NOT' => array("Zona.id" => $zonas_asignadas))));
		$zonas_nuevas;
		foreach($zonas_asignadas as $zona){
			
			$mun = $this->EquiposOperativo->Zona->Municipio->find('first', array('fields' => array('Municipio.nombre'), 'conditions' => array('Municipio.id'=>$zona['Zona']['municipio_id'])));
			$zonas_nuevas[$zona['Zona']['id']] = $mun['Municipio']['nombre'];
			
		}	

		
		
		//Coordinadores asigandos a EO's
		$coordinador = $this->UsersEquiposOperativo->find('first',array('fields'=>array('user_id'),'conditions'=>array('UsersEquiposOperativo.group_id'=>'6')));
		$coordinador = $coordinador['UsersEquiposOperativo']['user_id'];
		//Coordinadores que no tienen EO
		$coordinadores = $this->EquiposOperativo->User->find('list', array('fields' => array('User.id', 'nombre_completo'), 'conditions' =>  array('NOT' => array("User.id" => $coordinador),'User.group_id' => '6')));
		
		
		//Pedagogicos asignados a EO's
		$pedagogicos_asignados = $this->UsersEquiposOperativo->find('list',array('fields'=>array('UsersEquiposOperativo.user_id'),'conditions'=>array('UsersEquiposOperativo.group_id'=>'3')));
		//Pedagogicos que no tienen EO
		$pedagogicos = $this->EquiposOperativo->User->find('list', array('fields' => array('User.id', 'nombre_completo'), 'conditions' =>  array('NOT' => array("User.id" => $pedagogicos_asignados),'User.group_id' => '3')));
		
		
		//Psicosociales asignados a EO's
		$psicosociales_asignados = $this->UsersEquiposOperativo->find('list',array('fields'=>array('UsersEquiposOperativo.user_id'),'conditions'=>array('UsersEquiposOperativo.group_id'=>'4')));
		//Psicosociales que no tienen EO
		$psicosociales = $this->EquiposOperativo->User->find('list', array('fields' => array('User.id', 'nombre_completo'), 'conditions' =>  array('NOT' => array("User.id" => $psicosociales_asignados),'User.group_id' => '4')));
		
		
		//Refuerzo asignados a EO's
		$refuerzo_asignados = $this->UsersEquiposOperativo->find('list',array('fields'=>array('UsersEquiposOperativo.user_id'),'conditions'=>array('UsersEquiposOperativo.group_id'=>'5')));
		//Refuerzo que no tienen EO
		$refuerzo = $this->EquiposOperativo->User->find('list', array('fields' => array('User.id', 'nombre_completo'), 'conditions' =>  array('NOT' => array("User.id" => $refuerzo_asignados),'User.group_id' => '5')));
		
				
		$this->set(compact('zonas_nuevas', 'users', 'coordinadores', 'pedagogicos', 'psicosociales', 'refuerzo'));	
	}
	


	function edit($id = null) {
		$usuario_activo = $this->Access->getMy('username');
		//Verificacion de sesion del sistema		
		if(!$usuario_activo){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'users','action' => 'login'));
		}
		if (!$id && empty($this->data)) {
			$this->Session->setFlash(__('Equipo operativo Invalido', true));
			$this->redirect(array('action' => 'index'));
		}
		if (!empty($this->data)) {
			$form = $this->data;
			
			$usuarios[]=$form['EquiposOperativo']['Coordinador'];
			if(is_array($form['EquiposOperativo']['Pedagogicos'])) {
				foreach ($form['EquiposOperativo']['Pedagogicos'] as $usuario){
					$usuarios[]=$usuario;
				}
			}
			if(is_array($form['EquiposOperativo']['Psicosociales'])) {
				foreach ($form['EquiposOperativo']['Psicosociales'] as $usuario){
					$usuarios[]=$usuario;
				}
			}
			if(is_array($form['EquiposOperativo']['Refuerzo'])) {
				foreach ($form['EquiposOperativo']['Refuerzo'] as $usuario){
					$usuarios[]=$usuario;
				}
			}
			
	
			//Se borran los registros de la tabla UsuariosEquiposOperativos para evitar conflictos
			$this->UsersEquiposOperativo->deleteAll(array("UsersEquiposOperativo.equipos_operativo_id"=>$id));
			//Se establece el ID para actualizar el EO.	
			$this->EquiposOperativo->id = $id;
			if ($this->EquiposOperativo->saveField("zona_id", $form['EquiposOperativo']['zona_id'])) {				
				$id_equipo_operativo = $id;			
				//Se agregan los usuarios que pertenecen al EO
				for($i=0; $i<count($usuarios); $i++){
					$grupo = $this->EquiposOperativo->User->find('list', array('fields' => array('User.group_id'),'conditions'=>array('User.id'=>$usuarios[$i])));
					$registro['UsersEquiposOperativo']= array('user_id'=>$usuarios[$i],'equipos_operativo_id'=>$id_equipo_operativo,'group_id'=>$grupo[$usuarios[$i]]);				
					$this->UsersEquiposOperativo->create();
					$this->UsersEquiposOperativo->save($registro);

				}				
				
				$this->Session->setFlash(__('Equipo operativo ha sido guardada', true));
				$this->redirect(array('action' => 'index'));
			} else {
				$this->Session->setFlash(__('Equipo operativo no ha sido guardada. Intente de nuevo.', true));
			}
		}
		else {
			$this->data = $this->EquiposOperativo->read(null, $id);
		}
		
		//Zonas
		$zonas = $this->EquiposOperativo->Zona->find('list', array('fields' => array('Zona.id', 'Zona.municipio_id')));
		foreach($zonas as $key => $zona){
			$mun = $this->EquiposOperativo->Zona->Municipio->find('first', array('fields' => array('nombre'), 'conditions' => array('Municipio.id'=>$zona['id'])));
			$zonas[$key] = $mun['Municipio']['nombre'];
		}
		//Coordinador del Equipo
		$coordinador = $this->UsersEquiposOperativo->find('first',array('fields'=>array('user_id'),'conditions'=>array('equipos_operativo_id'=>$id, 'UsersEquiposOperativo.group_id'=>'6')));
		//Coordinadores asignados a EO's menos el propio
		$coordinadores_asignados = $this->UsersEquiposOperativo->find('list',array('fields'=>array('user_id'),'conditions'=>array('UsersEquiposOperativo.group_id'=>'6', 'NOT' => array("UsersEquiposOperativo.user_id" => $coordinador['UsersEquiposOperativo']['user_id']))));
		//Coordinadores que no tienen EO
		$coordinadores = $this->EquiposOperativo->User->find('list', array('fields' => array('User.id', 'nombre_completo'), 'conditions' =>  array('NOT' => array("User.id" => $coordinadores_asignados),'User.group_id' => '6')));
		
		//Pedagogicos			
		$pedagogicos = $this->EquiposOperativo->User->find('list', array('fields' => array('User.id','nombre_completo'),'conditions'=>array('User.group_id'=>'3')));
		$pedagogicos_selected = $this->UsersEquiposOperativo->find('list',array('fields'=>array('user_id'),'conditions'=>array('equipos_operativo_id'=>$id, 'UsersEquiposOperativo.group_id'=>'3')));
				
		//Pedagogicos asignados a EO's
		$pedagogicos_asignados = $this->UsersEquiposOperativo->find('list',array('fields'=>array('UsersEquiposOperativo.user_id'),'conditions'=>array('UsersEquiposOperativo.group_id'=>'3','NOT' => array("UsersEquiposOperativo.user_id" => $pedagogicos_selected))));
		//Pedagogicos que no tienen EO
		$pedagogicos = $this->EquiposOperativo->User->find('list', array('fields' => array('User.id', 'nombre_completo'), 'conditions' =>  array('NOT' => array("User.id" => $pedagogicos_asignados),'User.group_id' => '3')));
		
		//Psicosociales		
		$psicosociales = $this->EquiposOperativo->User->find('list', array('fields' => array('User.id','nombre_completo'),'conditions'=>array('User.group_id'=>'4')));
		$psicosociales_selected = $this->UsersEquiposOperativo->find('list',array('fields'=>array('user_id'),'conditions'=>array('equipos_operativo_id'=>$id, 'UsersEquiposOperativo.group_id'=>'4')));
				
		//Psicosociales asignados a EO's
		$psicosociales_asignados = $this->UsersEquiposOperativo->find('list',array('fields'=>array('UsersEquiposOperativo.user_id'),'conditions'=>array('UsersEquiposOperativo.group_id'=>'4', 'NOT' => array("UsersEquiposOperativo.user_id" => $psicosociales_selected))));
		//Psicosociales que no tienen EO
		$psicosociales = $this->EquiposOperativo->User->find('list', array('fields' => array('User.id', 'nombre_completo'), 'conditions' =>  array('NOT' => array("User.id" => $psicosociales_asignados),'User.group_id' => '4')));
		
		//Refuerzo
		$refuerzo = $this->EquiposOperativo->User->find('list', array('fields' => array('User.id','nombre_completo'),'conditions'=>array('User.group_id'=>'5')));
		$refuerzo_selected = $this->UsersEquiposOperativo->find('list',array('fields'=>array('user_id'),'conditions'=>array('equipos_operativo_id'=>$id, 'UsersEquiposOperativo.group_id'=>'5'))); 
		
		//Refuerzo asignados a EO's
		$refuerzo_asignados = $this->UsersEquiposOperativo->find('list',array('fields'=>array('UsersEquiposOperativo.user_id'),'conditions'=>array('UsersEquiposOperativo.group_id'=>'5', 'NOT' => array("UsersEquiposOperativo.user_id" => $refuerzo_selected))));
		//Refuerzo que no tienen EO
		$refuerzo = $this->EquiposOperativo->User->find('list', array('fields' => array('User.id', 'nombre_completo'), 'conditions' =>  array('NOT' => array("User.id" => $refuerzo_asignados),'User.group_id' => '5')));
		
		$this->set('zona_id',$this->data["EquiposOperativo"]["zona_id"]);
		$this->set('coordinador_id',$coordinador['UsersEquiposOperativo']['user_id']);
		$this->set(compact('zonas', 'coordinadores', 'pedagogicos', 'psicosociales', 'refuerzo', 'pedagogicos_selected', 'psicosociales_selected', 'refuerzo_selected'));
		
	}

	function delete($id = null) {
		$usuario_activo = $this->Access->getMy('username');
		//Verificacion de sesion del sistema		
		if(!$usuario_activo){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'users','action' => 'login'));
		}
		if (!$id) {
			$this->Session->setFlash(__('Equipos Operativo invalido', true));
			$this->redirect(array('action'=>'index'));
		}
		else{			
			//Se borran las relaciones que tiene el equipo operativo con los usuarios
			$this->UsersEquiposOperativo->deleteAll(array("UsersEquiposOperativo.equipos_operativo_id"=>$id));
			//Se borra el Equipo Operativo
			$this->EquiposOperativo->delete($id);
			$this->Session->setFlash(__('Equipo Operativo eliminado', true));
			$this->redirect(array('action'=>'index'));
		}
		$this->Session->setFlash(__('Equipos operativo no eliminado', true));
		$this->redirect(array('action' => 'index'));
	}
}
?>